[2025-10-12] Kafka
๐ฆฅ ๋ณธ๋ฌธ
Motivation
Log Data
- ์ข
๋ฅ
- ์ฌ์ฉ์ ํ๋ ์ด๋ฒคํธ : ๋ก๊ทธ์ธ, ์ข์์, ํด๋ฆญโฆ
- ์ด์ ์งํ : ์ฝ ์คํ, ์ค๋ฅ, ์ง์ฐ ์๊ฐ, ์์ ์ฌ์ฉ๋ฅ
- ์ธํฐ๋ท ์ ํ๋ฆฌ์ผ์ด์
๋ํฅ์ผ๋ก ๋ก๊ทธ๊ฐ ์์ฐ ๋ฐ์ดํฐ์ ์ผ๋ถ๊ฐ ๋จ. ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ
- ๊ฒ์ ์ ํ๋
- ์ถ์ฒ ์์คํ
- ๊ด๊ณ ํ๊ฒํ
- ๋ณด์ ์ ํ๋ฆฌ์ผ์ด์ : ์คํธ ์ฐจ๋จ
- ๋ด์ค ํผ๋
โ ๋ฐ์ดํฐ๋ณด๋ค ๋ณผ๋ฅจ์ด ์ปค์ง
๊ธฐ์กด์ ํ๊ณ
์์ฐ ์๋ฒ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ก๊ทธ ํ์ผ ์คํฌ๋ฉํ๋ ๋ฐฉ์์์ ๋ก๊ทธ ์์ง๊ธฐ๋ฅผ ๊ฐ๋ฐ.
- ๊ธฐ๋ฅ ๋ถ์ผ์น : ์ ๋ฌ ๋ณด์ฅ ๊ธฐ๋ฅ์ ์ค์ ์ ๋
- ๋ช ๊ฐ์ ํ์ด์ง ๋ทฐ ์ด๋ฒคํธ๊ฐ ์์ค๋๋ ๊ฒ์ ์น๋ช ์ ์ด์ง ์์
- ๊ธฐ์กด์ ์์ง๊ธฐ๋ ํธ๋์ ์ ๊ธฐ๋ฅ์ด๋ ์๋น๋ ํ ์น์ธ ๋๋ ๊ฒ์ ํ์ฉ.
โ ๊ณผ๋ํ ๊ธฐ๋ฅ์ผ๋ก ๋ณต์ก์ฑ๋ง ์ฆ๊ฐ.
- ์ฒ๋ฆฌ๋ ๋ถ์กฑ
- ๋ถ์ฐ ์ง์ ๋ฏธํก : ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๋จธ์ ์ ๋ถํ ํ๊ณ ์ ์ฅํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ด ์์
- ๋ฉ์์ง ํ ๊ฐ์ฉ์ฑ ๋ฌธ์ : ๋ฉ์์ง์ ์ฆ๊ฐ์ ์ธ ์๋น ๊ฐ์ ํ์ฌ ๋ฉ์์ง ํ ํฌ๊ธฐ๊ฐ ์์
ํน์ ๋ก๊ทธ ์์ง๊ธฐ ํ๊ณ
- ์คํ๋ผ์ธ ์๋นํ๋๋ก ๊ตฌ์ถ
- ๋ถ ๋จ์ ํ์ผ๊ณผ ๊ฐ์ด ๋ถํ์ํ๊ฒ ๊ตฌํ ์ฌํญ์ ์๋น์์๊ฒ ๋ ธ์ถ
-
push ๋ชจ๋ธ์ ์ฌ์ฉ : ๋ธ๋ก์ปค๊ฐ ์๋น์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
โ pull ๋ชจ๋ธ์ด ๋ฉ์์ง ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์ง, rewind.
Kafka
๋ถ์ฐ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋์ ์ฒ๋ฆฌ๋์ ์ ๊ณต์ ์ ๊ณตํ๊ณ messaging system๊ณผ ์ ์ฌํ API๋ฅผ ์ ๊ณตํ์ฌ ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ์๋น ๊ฐ๋ฅ.
์จ๋ผ์ธ/์คํ๋ผ์ธ ์๋น ๋ชจ๋์ ๋ํด ๋จ ํ๋์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ํ
- ์คํ๋ผ์ธ ์๋น : ๋ฐ์ดํฐ๋ฅผ ๋์ค์ ์๋นํ๊ธฐ ์ํด ์ ์ฅ
๊ฐ๋
- topic : ํน์ ์ ํ์ ๋ฉ์์ง ์คํธ๋ฆผ์ ์ ์.
- producer : ํ๋ก๋์๊ฐ ํ ํฝ์ ๋ฉ์์ง๋ฅผ ๋ฐํ
- broker : ๋ฐํ๋ ๋ฉ์์ง๊ฐ ์ ์ฅ๋๋ ์๋ฒ ์งํฉ.
-
consumer : ๋ธ๋ก์ปค๋ก ๋ถํฐ ํ ๊ฐ ํน์ ์ฌ๋ฌ ๊ฐ์ topic์ ๊ตฌ๋ ํ ์ ์์. ๋ฐ์ดํฐ๋ฅผ pullํ์ฌ ์๋น. ์ฌ๋ฌ consumer๊ฐ ํ ํฝ์ ๋ชจ๋ ๋ฉ์์ง ๋ณต์ฌ๋ณธ ํ๋๋ฅผ ๊ณต๋์ผ๋ก ์๋นํ๋ point-to-point ์ ๋ฌ ๋ชจ๋ธ.
consumer๋ ํ ํฝ์ ์์ฒด ๋ณต์ฌ๋ณธ์ ๊ฒ์ํ๋ ๋ฐํ/๊ตฌ๋ ๋ชจ๋ธ ์ง์
-
๊ตฌ๋
consumer๋ ํ ํฝ์ ๋ํด ํ๋ ์ด์์ ๋ฉ์์ง ์คํธ๋ฆผ์ ์์ฑํ๊ณ ๋ฐํ๋ ๋ฉ์์ง๋ ํ์ ์คํธ๋ฆผ์ผ๋ก ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ค.
๊ฐ ๋ฉ์์ง ์คํธ๋ฆผ์ ์ง์์ ์ผ๋ก ์์ฑ๋๋ ๋ฉ์์ง ์คํธ๋ฆผ์ ๋ํ iterator ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต. iterator๋ ์ ๋ ์ข ๋ฃ๋์ง ์์. ์๋นํ๋ ๋ฉ์์ง๊ฐ ์์ผ๋ฉด iterator๋ ์ ๋ฉ์์ง๊ฐ ๋ฐํ๋ ๋๊น์ง block ๋จ.
- iterator interface : ์ปฌ๋ ์ (์งํฉ์ฒด)์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ ธ์ถํ์ง ์์ผ๋ฉด์ ๊ทธ ์์๋ค์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผ(์ํ)ํ ์ ์๋๋ก ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค
-
- EX)
producer = new Producer(โฆ);
message = new Message(โtest message strโ.getBytes());
set = new MessageSet(message);
producer.send(โtopic1โ, set);
streams[] = Consumer.createMessageStreams(โtopic1โ, 1)
for (message : streams[0]) {
bytes = message.payload();
// do something with the bytes
}
Architecture

์ฌ๋ฌ ๋ธ๋ก์ปค๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ
- ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํด ํ ํฝ์ ์ฌ๋ฌ ํํฐ์
์ผ๋ก ๋๋จ.
- topic1/part1๊ณผ topic/part2 ์ผ๋ก 2๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋จ
- ๊ฐ ๋ธ๋ก์ปค๋ ํ๋ ์ด์์ ํํฐ์ ์ ์ ์ฅ
- ์ฌ๋ฌ ํ๋ก๋์์ ์ปจ์๋จธ๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ๋ฐํํ๊ณ ๊ฒ์
ํจ์จ์ฑ (๋จ์ผ ํํฐ์ ๋ด์์)
- ๊ฐ๋จํ ์ ์ฅ์
- ๋ก๊ทธ์ ํํฐ์
- ํ ํฝ์ ๊ฐ ํํฐ์ ์ ๋ ผ๋ฆฌ์ ๋ก๊ทธ.
- ๋ก๊ทธ๋ ๋์ผํ ํฌ๊ธฐ. ์ธ๊ทธ๋จผํธ ํ์ผ๋ค๋ก ๊ตฌํ
- ๋ฉ์์ง ๋ฐํ
- ํ๋ก๋์๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐํํ ๋๋ง๋ค ๋ธ๋ก์ปค๋ ๋ง์ง๋ง ์ธ๊ทธ๋จผํธ ํ์ผ์ ์ถ๊ฐ
- ์์ฐจ์ ์ผ๋ก ์ฐ๊ธฐ๋ก ์ํ. ์์ ์ฐ๊ธฐ์ ๋นํด ๋น ๋ฆ
- ๋์คํฌ ํ๋ฌ์ฑ
- ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ฉ์์ง๊ฐ ์์ด๋ ๊ฒฝ์ฐ
- ํน์ ์๊ฐ์ด ๊ฒฝ๊ณผํ ๊ฒฝ์ฐ
- ํ๋ฌ์ฑ ์ดํ์ consumer์ ๋ฉ์์ง๊ฐ ๋ ธ์ถ๋จ.
- ๋ฉ์์ง ID
-
๋ช ์์ ๋ฉ์์ง ID X ๋์ ๋ ผ๋ฆฌ์ ์คํ์ ์ผ๋ก ์ฃผ์ ์ง์
โ ๋๋ค ์ ๊ทผ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ์ค๋ฒํค๋๋ฅผ ํผํจ
-
๋ค์ ๋ฉ์์ง ID(=์คํ์ )๋ (ํ์ฌ ID + ๋ฉ์์ง ๊ธธ์ด)
-
- ๋ฉ์์ง ์๋น
- consumer๊ฐ ํน์ ํํฐ์ ์์ ์์ฐจ์ ์ผ๋ก ๋ฉ์์ง ์๋น
- ํน์ ๋ฉ์์ง๋ฅผ ์น์ธํ๋ค๋ ๊ฒ์ ์ด์ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ์์ ํ๋ค๋ ๋ป.
- ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋นํ ๋ฐ์ดํฐ ๋ฒํผ๋ฅผ ์ค๋นํ๊ธฐ ์ํด ๋ธ๋ก์ปค์ ๋น๋๊ธฐ pull ์์ฒญ์ ๋ณด๋
- pull ์์ฒญ : ์๋น๊ฐ ์์๋๋ ๋ฉ์์ง์ ์คํ์ ๊ณผ ํ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํธ ์ ํฌํจ 1. ์คํ์ ๊ด๋ฆฌ

- ๊ฐ ๋ธ๋ก์ปค๋ ๋ชจ๋ ์ธ๊ทธ๋จผํธ ํ์ผ์ ์ฒซ๋ฒ์งธ ๋ฉ์์ง ์คํ์ ์ ํฌํจํ๋ ์คํ์ ์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง.
- ๊ฒ์์ ํตํด consumer์๊ฒ ๋ณด๋. consumer๋ ๋ค์์ ์๋นํ ๋ฉ์์ง์ ์คํ์ ์ ๊ณ์ฐํ๊ณ ๋ค์ pull ์์ฒญ์ ์ฌ์ฉ
- ๋ก๊ทธ์ ํํฐ์
- ํจ์จ์ ์ธ ์ ์ก
- ๋ฐฐ์น ์ฒ๋ฆฌ
- ํ๋ก๋์ : ๋จ์ผ ์ ์ก ์์ฒญ์ผ๋ก ๋ฉ์์ง ์ธํธ๋ฅผ ๋ธ๋ก์ปค์ ์ ์ถ
- ์ปจ์๋จธ : ์ปจ์๋จธ API๋ ํ ๋ฒ์ ํ๋์ ๋ฉ์์ง ์ฒ๋ฆฌ. pull ์์ฒญ์ผ๋ก ์ฌ๋ฌ ๋ฉ์์ง๋ฅผ ํ ๋ฒ์ ๊ฒ์
-
์ด์ ์ฒด์ ๊ธฐ๋ฅ ํ์ฉ
๋ฉ์์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑํ๋ ๊ฒ์ ํผํ์ง๋ง ๊ธฐ๋ณธ ํ์ผ ์์คํ ํ์ด์ง ์บ์์ ์์กด
- ์ฅ์
- ์ด์ค ๋ฒํผ๋ง ํํผ : Kafka ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ OS ํ์ด์ง ์บ์์ ๋ชจ๋ ์ ์ฅํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ํจ์จ์
- ๋ธ๋ก์ปค ํ๋ก์ธ์ค๊ฐ ์ฌ์์๋์ด๋ ์ด์์ฒด์ ์ ํ์ด์ง ์บ์๊ฐ ์ ์ง๋์ด warm cache ์ ์ง
- ๊ฐ๋น์ง ์ปฌ๋์ ์ค๋ฒํค๋ ๊ฐ์
ํ๋ก๋์์ ์ปจ์๋จธ ๋ชจ๋ ์ธ๊ทธ๋จผํธ ํ์ผ์ ์์ฐจ์ ์ด๊ณ ์์ ์ ์ ๊ทผํ์ฌ ์ผ๋ฐ์ ์ธ ์บ์ฑ ํด๋ฆฌ์คํฑ(write-through๋ read-ahead)์ด ํจ๊ณผ์ . ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ ํ์ ์ผ๋ก ๋น๋กํ์ฌ ์ฑ๋ฅ์ ๋ณด์
- ์ฅ์
-
Zero-Copy
ํ๋์ ๋ฉ์์ง๊ฐ ์ฌ๋ฌ ์ปจ์๋จธ์๊ฒ ์ฌ๋ฌ ๋ฒ ์ ์กํ๋ ๊ฒ์ ์ต์ ํ
- ์ผ๋ฐ์ ์ธ ์ ์ก ๊ณผ์
- ์ ์ฅ ๋งค์ฒด โ OS์ ํ์ด์ง ์บ์๋ก ๋ฐ์ดํฐ ์ฝ๊ธฐ
- ํ์ด์ง ์บ์ โ ์ ํ๋ฆฌ์ผ์ด์ ๋ฒํผ๋ก ๋ณต์ฌ
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฒํผ โ ๋ค๋ฅธ ์ปค๋ ๋ฒํผ๋ก ๋ณต์ฌ
- ์ปค๋ ๋ฒํผ โ ์์ผ์ผ๋ก ์ ์ก
โ
sendfileAPI๋ฅผ ํ์ฉํ์ฌ ํ์ผ ์ฑ๋์์ ์์ผ ์ฑ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์กํ์ฌ 2~3๋จ๊ณ์ ๋ ๋ฒ์ ๋ณต์ฌํ ํ ๋ฒ์ ์์คํ ์ฝ์ ํํผ - ์ผ๋ฐ์ ์ธ ์ ์ก ๊ณผ์
- ๋ฐฐ์น ์ฒ๋ฆฌ
- Stateless broker
- ์ปจ์๋จธ์ ์๋น ์ ๋ณด๋ฅผ ์ปจ์๋จธ๊ฐ ๊ด๋ฆฌํ์ฌ ์ค๋ฒํค๋๋ฅผ ๋ฎ์ถ์ง๋ง ์ด๋ค ๊ตฌ๋ ์๊ฐ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ์๋นํ๋ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง ์ญ์ ์์ ์ ๊ฒฐ์ ํ๋ ๊ฒ ์ด๋ ค์
-
Time-based retention policy
์๊ฐ ๊ธฐ๋ฐ SLA ๋ณด์กด ์ ์ฑ . ํน์ ๊ธฐ๊ฐ(์ฝ 7์ผ)๋ณด๋ค ์ค๋๋๋ฉด ์๋์ผ๋ก ์ญ์
- ์คํ๋ผ์ธ ์ปจ์๋จธ๋ ๋์ฒด๋ก ์ค์๊ฐ~์ผ๋ณ๋ก ์๋น๋ฅผ ์๋ฃํ์ฌ ์ ์๋.
- ๋์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฑ๋ฅ ์ ํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์
-
Rewind & Re-consume
์ด์ ์คํ์ ์ rewind backํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค์ re-consume ๊ฐ๋ฅ
- ์ฌ๋ก
- ์ปจ์๋จธ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฌ์ฒ๋ฆฌ
- ์ฃผ๊ธฐ์ ์ผ๋ก ํ๋ฌ์ฑ ํ๋ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ค๋ ์ ์์. ํ๋ฌ์ฑ๋์ง ์์ ๋ฉ์์ง ์ค ๊ฐ์ฅ ์์ ์คํ์ ์ ์ฒดํฌํฌ์ธํธ ์ผ์ ์ฌ์๋น ๊ฐ๋ฅ
โ pull ๋ชจ๋ธ์ ์ด์
- ์ฌ๋ก
Distrinuted Coordination (๋ถ์ฐ ์กฐ์ )
- consumer group
- ๊ณต๋ ์๋น : ์ปจ์๋จธ ๊ทธ๋ฃน์ ํ๋ ์ด์์ ์ปจ์๋จธ๋ก ๊ตฌ์ฑ. ๊ตฌ๋ ๋ topic set์ ๊ณต๋์ผ๋ก ์๋น
- ๋จ์ผ ์ ๋ฌ : ๊ฐ ๋ฉ์์ง๋ ๊ทธ๋ฃน ๋ด์ ๋จ ํ๋์ ์ปจ์๋จธ์๊ฒ ์ ๋ฌ
- ๋ ๋ฆฝ์ ์๋น : ์๋ก ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ตฌ๋ ๋ ๋ฉ์์ง ์ ์ฒด๋ฅผ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์๋น
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ต์ ๋จ์
- ํ ํฝ ๋ด์ ํํฐ์ ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ต์ ๋จ์๋ก ๋ง๋ฆ
- ํ ํํฐ์
์ ๋ชจ๋ ๋ฉ์์ง๊ฐ ๋จ์ผ ์ปจ์๋จธ์ ์ํด์๋ง ์๋น
- ์ฌ๋ฌ ์ปจ์๋จธ๊ฐ ์๋นํ๋ฉด ๋๊ธฐํ ์ค๋ฒํค๋ ํ์ํ์ง๋ง Kafka๋ ์๋น ํ๋ก์ธ์ค๊ฐ ์ฌ์กฐ์ ํ ๋๋ง ์กฐ์ ํ๊ณ ๋งค์ฐ ๋๋ฌพ
- over partitioning : ๋ถํ๊ฐ ๊ท ํ์ ์ด๋ฃจ๋ ค๋ฉด ํ ํฝ์ ํํฐ์ ์๊ฐ ๊ฐ ๊ทธ๋ฃน์ ์ปจ์๋จธ ์๋ณด๋ค ํจ์ฌ ๋ง์์ผ ํจ
- ๋ถ์ฐ ์กฐ์ ๋งค์ปค๋์ฆ : Zookeeper
- ๋ง์คํฐ ๋ ธ๋ ๋ถ์ฌ : ๋ง์คํฐ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ง์คํฐ ์ฅ์ ๊ฐ๋ฅ์ฑ์ ์ ๊ฑฐ. ์ปจ์๋จธ๋ค์ด ์์ฒด ์กฐ์ ํ๋ ๋งค์ปค๋์ฆ์ ์ฌ์ฉ. โ ๋ณต์ก์ฑ์ ์ค์
-
์์
์ฃผํคํผ ์์ ๋ชฉ์ ๋ ์ง์คํธ๋ฆฌ ๊ฒฝ๋ก ๋ณ๋ ๊ฐ์ง ๋ธ๋ก์ปค ๋ฐ ์ปจ์๋จธ์ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ ๊ฐ์ง. ๋ธ๋ก์ปค ๋ ์ง์คํธ๋ฆฌ (Broker Registry), ์ปจ์๋จธ ๋ ์ง์คํธ๋ฆฌ (Consumer Registry) ์ฌ์กฐ์ ํธ๋ฆฌ๊ฑฐ ๋ธ๋ก์ปค/์ปจ์๋จธ ๋ณ๋ ์ ๊ฐ ์ปจ์๋จธ์๊ฒ ์ฌ๋ถ๋ฐฐ(rebalance) ํ๋ก์ธ์ค ์์์ ์๋ฆผ. ๋ธ๋ก์ปค ๋ฐ ์ปจ์๋จธ ๋ ์ง์คํธ๋ฆฌ์ ์์ฒ(Watcher) ๋ฑ๋ก. ๊ด๊ณ ๋ฐ ์คํ์ ์ ์ง ์ปจ์๋จธ ๊ทธ๋ฃน๊ณผ ํํฐ์ ๊ฐ์ ์๋น ๊ด๊ณ ๋ฐ ๋ง์ง๋ง ์๋น ์คํ์ ์ถ์ . ์์ ๊ถ ๋ ์ง์คํธ๋ฆฌ (Ownership Registry), ์คํ์ ๋ ์ง์คํธ๋ฆฌ (Offset Registry) - ํน์ง
- ํ์ผ ์์คํ ๊ณผ ์ ์ฌํ API(๊ฒฝ๋ก ์์ฑ, ๊ฒฝ๋ก ๊ฐ ์ค์ /์ฝ๊ธฐ ์ญ์ ๋ฑ)๋ฅผ ์ ๊ณต
- ์์ฒ ๋ฑ๋ก : ๊ฒฝ๋ก์ ์์ฒ๋ฅผ ๋ฑ๋กํ์ฌ ๊ฒฝ๋ก์ ์์ ๋๋ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์๋ฆผ โ ๋ธ๋ก์ปค ์ธํธ ๋๋ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค ์๋ฆผ์ ๋ฐ์
- ๊ฒฝ๋ก๋ฅผ ์์๋ก ์์ฑ ๊ฐ๋ฅ โ ํ๋ก์ธ์ค๊ฐ ์คํจํ๋ฉด ์์ ๊ถ ์๋ ํด์
- ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ณต์ ํ์ฌ ์ ๋ขฐ์ฑ๊ณผ ๊ฐ์ฉ์ฑ ์ ๊ณต
- ์ ์ฅ ์ ๋ณด
- ๋ธ๋ก์ปค/์ปจ์๋จธ ๋ ์ง์คํธ๋ฆฌ : ๊ฐ ๋ธ๋ก์ปค/์ปจ์๋จธ ์์์ Zookeeper์ ์ ์ฅ
- ๋ธ๋ก์ปค ๋ ์ง์คํธ๋ฆฌ : ๋ธ๋ก์ปค์ ํธ์คํธ๋ช , ํฌํธ, ํ ํฝ ๋ฐ ํํฐ์ ์ ๋ณด.
- ์ปจ์๋จธ ๋ ์ง์คํธ๋ฆฌ : ์ปจ์๋จธ ๊ทธ๋ฃน๊ณผ ๊ตฌ๋ ํ ํฝ ์ ๋ณด.
- ๊ทธ๋ฃน ๋ณ ๋ฑ๋ก
- ์์ ๊ถ ๋ ์ง์คํธ๋ฆฌ : ๊ตฌ๋ ๋ ํํฐ์ ๋ณ๋ก ์๋น์ค์ธ ์ปจ์๋จธ ID ์ ์ฅ
- ์คํ์ ๋ ์ง์คํธ๋ฆฌ : ๋ง์ง๋ง์ผ๋ก ์๋น๋ ๋ฉ์์ง์ ์คํ์ ์ ์ฅ. ์๊ตฌ์ . ๋๋จธ์ง๋ ์์
- ๋ธ๋ก์ปค/์ปจ์๋จธ ๋ ์ง์คํธ๋ฆฌ : ๊ฐ ๋ธ๋ก์ปค/์ปจ์๋จธ ์์์ Zookeeper์ ์ ์ฅ
- ์ฅ์ ์ฒ๋ฆฌ
- ๋ธ๋ก์ปค๊ฐ ์คํจํ๋ฉด ๋ธ๋ก์ปค ๋ฑ๋ก์์ ์๋์ผ๋ก ๊ฒฝ๋ก ์ ๊ฑฐ
- ์ปจ์๋จธ ์คํจ์ ์ปจ์๋จธ ๋ฑ๋ก์์ ํด๋น ํญ๋ชฉ์ ์ฝ๊ณ ์์ ๊ถ ๋ฑ๋ก์์ ์์ ํ ๋ชจ๋ ํํฐ์ ์ ์์
-
์ฌ๋ถ๋ฐฐ
์ปจ์๋จธ๊ฐ ์์๋๊ฑฐ๋ ๋ณ๋์ ํตํด ์๋ฆผ์ ๋ฐ์ผ๋ฉด ์ฌ๋ถ๋ฐฐ ํ๋ก์ธ์ค ์์
- ์ ๋ณด ์์ง : ์ฃผํคํผ์์ ํ ํฝ์ ์ฌ์ฉ๊ฐ๋ฅํ ํํฐ์ ์งํฉ๊ณผ ๊ตฌ๋ ์ค์ธ ์ปจ์๋จธ ์งํฉ์ ์ฝ์ด์ด
- ํํฐ์ ๋ถ๋ฐฐ : ์ฌ์ฉ ๊ฐ๋ฅํ ํํฐ์ ์งํฉ์ ๊ตฌ๋ ์ค์ธ ์ปจ์๋จธ ์งํฉ ๊ฐ์ ๋ฉ์ด๋ก๋ก ๋๋๊ณ ํ๋์ ๋ฉ์ด๋ฆฌ๋ฅผ ์์
- ์์ ๊ถ ๋ฑ๋ก : ์ปจ์๋จธ๋ ์์ ๊ถ ๋ ์ง์คํธ๋ฆฌ์ ID๋ฅผ ๋ฑ๋ก
- ์๋น ์์ : ์คํ์ ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋ ์คํ์ ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํ
- ์คํ์
์
๋ฐ์ดํธ : ์ฃผ๊ธฐ์ ์ผ๋ก ์คํ์
๋ ์ง์คํธ๋ฆฌ์ ์
๋ฐ์ดํธ
- ์ฌ๋ถ๋ฐฐ ์ถฉ๋ ์ฒ๋ฆฌ : ์ฌ๋ถ๋ฐฐ ์๋ฆผ์ด ์ปจ์๋จธ ๋ง๋ค ์ฝ๊ฐ ๋ค๋ฅธ ์๊ฐ์ ์์ ์์ ๊ถ ์ถฉ๋์ด ๋ฐ์ํ ๋, ๋ชจ๋ ํํฐ์ ์ ํด์ ํ๊ณ ์ฌ์กฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์๋
- ์ ์ปจ์๋จธ ๊ทธ๋ฃน ์ฒ๋ฆฌ : ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์์ฑ๋์ด ์คํ์ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ ์ค์ ์ ๋ฐ๋ผ ์ฒ์๋ถํฐ ๋๊น์ง ์๋น ์์
์ ๋ฌ ๋ณด์ฅ
- ์ต์ 1ํ ์ ๋ฌ
- ํ ๋ฒ ์ด์ ์ ๋ฌ. ์ ์ค๋์ง๋ ์์.
- ์ค๋ณต ์ํฉ : ์ปจ์๋จธ ํ๋ก์ธ์ค๊ฐ ๊น๋ํ๊ฒ ์ข ๋ฃ๋์ง ์๊ณ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ ์ธ๊ณ ๋ฐ๋์ ์ปจ์๋จธ๋ ZooKeeper์ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐ๋ ์คํ์ ์ดํ์ ๋ฉ์์ง ์ค ์ผ๋ถ๋ฅผ ์ค๋ณต ํด์ ๋ฐ์
- ์ค๋ณต ์ ๊ฑฐ : ์ค๋ณต์ ๋ฏผ๊ฐํ ๊ฒฝ์ฐ ์ปจ์๋จธ์์ ์ค๋ณต ์ ๊ฑฐ ๋ก์ง์ ์ถ๊ฐํด์ผ ํจ. ์คํ์ ์ ๊ณ ์ ํค ์ฌ์ฉ
- ๋ฉ์์ง ์์ ๋ณด์ฅ
- ๋จ์ผ ํํฐ์ ์์ ๋ฉ์์ง๊ฐ ์ปจ์๋จธ์๊ฒ ์ ๋ฌ๋๋ ์์ ๋ณด์ฅ.
- ๋ค๋ฅธ ํํฐ์ ์์ ์ค๋ ๋ฉ์์ง ์ฌ์ด์ ์์๋ ๋ณด์ฅ X
- ๋ฌด๊ฒฐ์ฑ
- ๋ก๊ทธ ์์ ๋ฐฉ์ง
- ๋ก๊ทธ์ ๊ฐ ๋ฉ์์ง์ CRC(Cyclic Redundancy Check) ๊ฐ ์ ์ฅ.
- ๋ธ๋ก์ปค์ I/O ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์นดํ์นด๋ CRC๊ฐ ์ผ์นํ์ง ์๋ ๋ฉ์์ง๋ฅผ ์ ๊ฑฐํ์ฌ ๋ก๊ทธ๋ฅผ ๋ณต๊ตฌํ๋ ํ๋ก์ธ์ค ์คํ.
- ๋ฉ์์ง ์์ค์ CRC๋ฅผ ํตํด ๋ฉ์์ง๊ฐ ์์ฐ/์๋น ํ์ ๋คํธ์ํฌ ์ค๋ฅ๋ ํ์ธ ๊ฐ๋ฅ
- ๋ก๊ทธ ์์ ๋ฐฉ์ง
- ๊ฐ์ฉ์ฑ
- ์ํฉ
- ๋ธ๋ก์ปค ๋ค์ด : ๋ธ๋ก์ปค์ ์ ์ฅ๋ ์์ง ์๋น๋์ง ์์ ๋ฉ์์ง๋ ์ฌ์ฉ ๋ถ๊ฐ
- ์ ์ฅ ์์คํ ์์ : ์๋น๋์ง ์์ ๋ฉ์์ง๋ ์๊ตฌ์ ์ผ๋ก ์ ์ค
- ํฅํ ๊ณํ : ์ดํ์ ์ฌ๋ฌ ๋ธ๋ก์ปค์ ์ค๋ณต ์ ์ฅํ์ฌ ํด๊ฒฐํ ๊ณํ
- ์ํฉ
๋ฐฐํฌ ๋ฐ ํ์ฉ

- ๋ผ์ด๋ธ ๋ฐ์ดํฐ์ผํฐ ํด๋ฌ์คํฐ : ์ฌ์ฉ์ ๋๋ฉด ์๋น์ค๊ฐ ์คํ๋๋ ๋ฐ์ดํฐ ์ผํฐ ๋ด๋ถ์ ์์น
- ํ๋ฆ
- ํ๋ก ํธ์๋ ์๋น์ค๊ฐ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ batches(์ผ๊ด ์ฒ๋ฆฌ ๋ฐฉ์)๋ก ๋ฐํ
- LB๋ก ๋ธ๋ก์ปค์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ
- ๋์ผํ ๋ฐ์ดํฐ ์ผํฐ ๋ด์ ์จ๋ผ์ธ ์ปจ์๋จธ๊ฐ ์ค์๊ฐ์ผ๋ก ์๋น
- ํ๋ฆ
- ์คํ๋ผ์ธ ๋ถ์ ํด๋ฌ์คํฐ : ์คํ๋ผ์ธ ๋ถ์ ๋ฐ ๋ณด๊ณ ์ง์
- ์๋ฒ ๋๋ ์ปจ์๋จธ ์ธํธ๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณต์
- Hadoop ๋ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ ๋ก๋ ์์
์คํ
- Hadoop : ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ฒ๋ฆฌํ๋ ์คํ์์ค ํ๋ ์์ํฌ์ ๋๋ค. ๋ง์น ์ฌ๋ฌ ๋ช ์ ์ผ๊พผ์ด ํจ๊ป ํฐ ์ง์ ๋๋ฅด๋ ๊ฒ์ฒ๋ผ, ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์ปดํจํฐ์ ๋๋ ์ ์ฒ๋ฆฌํ์ฌ ํจ์จ์ฑ์ ๋์ ๋๋ค.
- ๋ณด๊ณ ์์ ๋ฐ ๋ถ์
- ํ๋กํ ํ์ดํ์ ์ฌ์ฉํ์ฌ ์์ ์ฟผ๋ฆฌ๋ฅผ ์ํด ์์ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ๋ํด ๊ฐ๋จํ ์คํฌ๋ฆฝํธ ์คํ
- ์ข ๋จ ๊ฐ ์ง์ฐ ์๊ฐ์ ์ฝ 10์ด
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ
- ๊ฐ์ฌ ์์คํ
- ๋ฉ์์ง ๋ฉํ ๋ฐ์ดํฐ : ํ์์คํฌํ์ ์๋ฒ ์ด๋ฆ ํฌํจ
- ๋ชจ๋ํฐ๋ง ์ด๋ฒคํธ : ํ๋ก๋์๋ ๊ณ ์ ๋ ์๊ฐ ์ฐฝ ๋ด์์ ๊ฐ ํ ํฝ์ ๋ํด ๋ฐํ๋ ๋ฉ์์ง ์๋ฅผ ๊ธฐ๋กํ๋ ๋ชจ๋ํฐ๋ง ์ด๋ฒคํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฑ
- ์ปจ์๋จธ๊ฐ ์์ ํ ๋ฉ์์ง ์๋ฅผ ๋ชจ๋ํฐ๋ง ์ด๋ฒคํธ์ ๋น๊ตํ์ฌ ๊ฒ์ฆ
- Hadoop ํตํฉ
- hadoop ํด๋ฌ์คํฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ธฐ ์ํด ์นดํ์นด ์ ๋ ฅ ํ์์ ๊ตฌํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ฝ์ ์ ์๊ฒ ํจ
- stateless ๋ธ๋ก์ปค์ ํด๋ผ์ด์ธํธ ์ธก ๋ฉ์์ง ์คํ์ ์ ์ฅ์ ํตํด ์์ ์ฌ์์์ ์ค๋ณต์ด๋ ์์ค ์์ด ์์ฐ์ค๋ฝ๊ฒ ๋ก๋
- ๋ฐ์ดํฐ์ ์คํ์ ์ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ์๋ง HDFS์ ์ ์ฅ
- ๊ฐ์ฌ ์์คํ
- ๋ฉ์์ง ์ง๋ ฌํ
- Avro ์ฑํ : ์ง๋ ฌํ ํ๋กํ ์ฝ ์ฌ์ฉ
- ๊ฐ ๋ฉ์์ง ํ์ด๋ก๋์ ์ง๋ ฌํ๋ ์คํค๋ง ID ์ ์ฅ
- ๊ฒฝ๋ ์คํค๋ง ๋ ์ง์คํธ๋ฆฌ ์๋น์ค ์ฌ์ฉ โ ์คํค๋ง ID๋ฅผ ์ค์ ์คํค๋ง์ ๋งคํ
- ํธํ์ฑ : ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ ์คํค๋ง ๋ ์ง์คํธ๋ฆฌ์์ ์คํค๋ง๋ฅผ ์ฐพ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ์ฒด๋ก ๋์ฝ๋ฉ โ ํ๋ก๋์-์ปจ์๋จธ ๋ฐ์ดํฐ ํธํ์ฑ์ ๊ฐ์
- Avro ์ฑํ : ์ง๋ ฌํ ํ๋กํ ์ฝ ์ฌ์ฉ
Leave a comment